As files are created and deleted on a Direct Access Storage Device, hereinafter referred to as a “disk,” the files and the free space on the disk typically become fragmented. Fragmentation occurs when an individual file is not stored to a contiguous region of the disk, but rather is broken up into two or more pieces, or “extents,” which are stored to separate regions of the disk. When a program tries to access a fragmented file, the disk read/write head must often move between multiple disk regions in order to access each extent of the file. As more files become fragmented, and as individual files are fragmented into more and more extents, more read/write head movements are required for file access, resulting in reduced performance.
Defragmentation may be employed to increase the amount of contiguous free space on the disk and reduce the number of file extents, thereby reducing head movement and file access time. In one common method for defragmenting a disk, all of the files on a disk are copied to another storage device. After the files are copied, they are then deleted from the disk. The files are then copied back onto the disk such that each file resides in contiguous regions of the disk space. This method is effective, but requires a second, spare storage device to be used as the intermediate storage medium.
In another method, file extents are moved to other disk regions to create a contiguous area of free space large enough to receive a single file. This process typically continues until all files are stored contiguously, with each file stored as a single extent, and with all free space being contiguous. While this method does not require a separate, intermediate storage medium, it is relatively slow due to the extensive data movement required.
When and how to defragment a disk often first depends on measuring the level of fragmentation of the disk. In one method, the level of fragmentation is expressed as a function of the number of free space fragments on the disk relative to the total free space. However, this method does not reflect qualitative measures of fragmentation. For example, while two files having the same number of extents may have the same quantitative measure of fragmentation, a qualitative fragmentation measure might reveal a significant difference between the two files, such as where the extents of one lie along the same disk track and on the same disk platter, or along the same cylinder on multiple disk platters, requiring little head movement, while the extents of the other lie in multiple disk tracks and cylinders on multiple disk platters, requiring greater head movement.
A qualitative fragmentation measure would therefore be advantageous, as would a defragmentation method that incorporates such a measure.